android 弹出进度条对话框的方法

您所在的位置:网站首页 android studio进度条对话框 android 弹出进度条对话框的方法

android 弹出进度条对话框的方法

2023-07-28 21:02| 来源: 网络整理| 查看: 265

Manages each alarm */ public class SetAlarm extends PreferenceActivity implements TimePickerDialog.OnTimeSetListener, Preference.OnPreferenceChangeListener {

private EditTextPreference mLabel; private CheckBoxPreference mEnabledPref; private Preference mTimePref; private AlarmPreference mAlarmPref; private FMAlarmPreference mFMAlarmPref; private CheckBoxPreference mFMRingState; private CheckBoxPreference mVibratePref; private RepeatPreference mRepeatPref; private MenuItem mTestAlarmItem; private AudioManager localAudioManager;

private int mId; private int mHour; private int mMinutes; private boolean mTimePickerCancelled; private Alarm mOriginalAlarm; static String SEARCH_DONE = "com.android.deskclock.search_done"; static String SET_PROGRESS = "com.android.deskclock.set_progress"; static String FMSERVICE = "net.kindroid.aidl.service.IFMService"; static String PROGRESS = "progress"; private AlertDialog dialog; private ProgressBar progressBar; final BroadcastReceiver searchBroadcast = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (action.equals(SEARCH_DONE)) { progressBar.setProgress(205); mFMAlarmPref.updateEntres(); if(mFMAlarmPref.mEntries != null && mFMAlarmPref.mEntries.length > 0) { mFMAlarmPref.setEnabled(true); } else { mFMAlarmPref.setEnabled(false); } if(dialog != null && dialog.isShowing()) { dialog.dismiss(); } } else if (action.equals(SET_PROGRESS)) { int progress = intent.getIntExtra(PROGRESS, 205); if (progress > progressBar.getProgress()) { progressBar.setProgress(progress); } else { progressBar.setProgress(205); } } else if (action.equals(Intent.ACTION_HEADSET_PLUG)) { // head-set plugged if (intent.getIntExtra("state", 0) == 0) { if(mFMRingState.isChecked()) { mFMRingState.setChecked(false); } mFMRingState.setEnabled(false); mFMAlarmPref.setEnabled(false); Dialog alarmDialog = mFMAlarmPref.getDialog(); if(alarmDialog != null && alarmDialog.isShowing()) { alarmDialog.dismiss(); } mAlarmPref.setEnabled(true); } else { mFMRingState.setEnabled(true); mFMRingState.setChecked(mOriginalAlarm.fmState); if (mFMAlarmPref.mEntries != null) { mFMAlarmPref.setEnabled(mOriginalAlarm.fmState); mAlarmPref.setEnabled(!mOriginalAlarm.fmState); } else { mFMAlarmPref.setEnabled(false); mAlarmPref.setEnabled(true); } } } } };

private Timer pTimer ; private TimerTask pTimerTask ; private Handler pHandler ; private boolean top_flag ; private TimePickerDialog tpd ;

private Toast sameAlarmToast ; private boolean mFlag = false; private static final int MAX_LABLE = 150; private static final int MAX_LABLE_SEND = 102; private static final int MAX_LABLE_DELAY = 700; private Handler mHandler = new Handler(){ public void handleMessage(Message message){ switch(message.what){ case MAX_LABLE_SEND: Toast.makeText(getApplicationContext(),getString(R.string.alarm_lable_too_long),Toast.LENGTH_SHORT) .show(); break; default: break;

} 复制代码

} }; /**

Set an alarm. Requires an Alarms.ALARM_ID to be passed in as an

extra. FIXME: Pass an Alarm object like every other Activity. */ @Override protected void onCreate(Bundle icicle) { super.onCreate(icicle);

// Override the default content view. setContentView(R.layout.set_alarm);

addPreferencesFromResource(R.xml.alarm_prefs);

localAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); // Get each preference so we can retrieve the value later. mLabel = (EditTextPreference) findPreference("label"); mLabel.getEditText().setFilters(new InputFilter[]{new FilenameLength(MAX_LABLE)}); //add by spreadst modify bug 13250 begin: mLabel.setOnPreferenceChangeListener( new Preference.OnPreferenceChangeListener() { public boolean onPreferenceChange(Preference p, Object newValue) { String val = (String) newValue; // Set the summary based on the new label. p.setSummary(val); mFlag = false; if (val != null && !val.equals(mLabel.getText())) { // Call through to the generic listener. return SetAlarm.this.onPreferenceChange(p, newValue); } return true; } }); mEnabledPref = (CheckBoxPreference) findPreference("enabled"); mEnabledPref.setOnPreferenceChangeListener( new Preference.OnPreferenceChangeListener() { public boolean onPreferenceChange(Preference p, Object newValue) { // Pop a toast when enabling alarms. //if (!mEnabledPref.isChecked()) { // popAlarmSetToast(SetAlarm.this, mHour, mMinutes, // mRepeatPref.getDaysOfWeek()); //} return SetAlarm.this.onPreferenceChange(p, newValue); } }); mTimePref = findPreference("time"); mAlarmPref = (AlarmPreference) findPreference("alarm"); mAlarmPref.setOnPreferenceChangeListener(this); mFMRingState = (CheckBoxPreference) findPreference("fm_state"); mFMRingState.setOnPreferenceChangeListener(this); mFMAlarmPref = (FMAlarmPreference) findPreference("fm_channel"); mFMAlarmPref.setOnPreferenceChangeListener(this); mVibratePref = (CheckBoxPreference) findPreference("vibrate"); mVibratePref.setOnPreferenceChangeListener(this); mRepeatPref = (RepeatPreference) findPreference("setRepeat"); mRepeatPref.setOnPreferenceChangeListener(this);

Intent i = getIntent(); mId = i.getIntExtra(Alarms.ALARM_ID, -1); if (Log.LOGV) { Log.v("In SetAlarm, alarm id = " + mId); }

Alarm alarm = null; if (mId == -1) { // No alarm id means create a new alarm. alarm = new Alarm(); } else { /* load alarm details from database */ alarm = Alarms.getAlarm(getContentResolver(), mId); // Bad alarm, bail to avoid a NPE. if (alarm == null) { finish(); return; } } mOriginalAlarm = alarm;

updatePrefs(mOriginalAlarm);

// We have to do this to get the save/cancel buttons to highlight on // their own. getListView().setItemsCanFocus(true);

// Attach actions to each button. Button b = (Button) findViewById(R.id.alarm_save); b.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { //if there is a alarm witch has the same hour and minutes , show timepicker again if(Alarms.isSametimeAlarm(getContentResolver(), mHour, mMinutes,mId)){ sameAlarmShow(mHour, mMinutes); return; } saveAlarm(); // Save the alarm and pop a toast. if(mEnabledPref.isChecked()){ popAlarmSetToast(SetAlarm.this, mHour, mMinutes, mRepeatPref.getDaysOfWeek()); } finish(); } }); final Button revert = (Button) findViewById(R.id.alarm_revert); revert.setEnabled(false); revert.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { int newId = mId; updatePrefs(mOriginalAlarm); // "Revert" on a newly created alarm should delete it. /* if (mOriginalAlarm.id == -1) { if(newId!=-1) Alarms.deleteAlarm(SetAlarm.this, newId); } else { saveAlarm(); } */ revert.setEnabled(false); } }); b = (Button) findViewById(R.id.alarm_delete); if (mId == -1) { b.setEnabled(false); mTimePickerCancelled = true; } else { b.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { deleteAlarm(); } }); }

// The last thing we do is pop the time picker if this is a new alarm. if (mId == -1) { // Assume the user hit cancel mTimePickerCancelled = true; showTimePicker(); } registerReceiver(searchBroadcast, new IntentFilter(Intent.ACTION_HEADSET_PLUG)); }

@Override protected void onPause(){ super.onPause() ; top_flag = false ; mFlag = false; }

private class PickerTimerTask extends TimerTask{ @Override public void run(){ if(pTimerTask != null){ pTimerTask.cancel(); pTimerTask = null ; } if(pTimer != null){ pTimer.cancel() ; pTimer = null ; } if( top_flag ){ Message msg = pHandler.obtainMessage(0); msg.sendToTarget(); } } }

@Override protected void onResume() { mFMAlarmPref.updateEntres(); if (mFMAlarmPref.mEntries == null) { mFMAlarmPref.setEnabled(false); } if(mFMAlarmPref != null && mFMAlarmPref.isFMPreferenceFocus) { mFMAlarmPref.bindService(); } super.onResume(); }

@Override protected void onStop() { mFMAlarmPref.releaseFM(); mFMAlarmPref.first = true; if(dialog != null && dialog.isShowing()) { dialog.dismiss(); dialog = null; } super.onStop(); }

@Override protected void onDestroy() { unregisterReceiver(searchBroadcast); super.onDestroy(); }

// Used to post runnables asynchronously. private static final Handler sHandler = new Handler();

public boolean onPreferenceChange(final Preference p, Object newValue) { // Asynchronously save the alarm since this method is called before // the value of the preference has changed. sHandler.post(new Runnable() { public void run() { // Editing any preference (except enable) enables the alarm. if (p != mEnabledPref) { mEnabledPref.setChecked(true); } final Button revert = (Button) findViewById(R.id.alarm_revert); revert.setEnabled(true); } }); return true; }

private void updatePrefs(Alarm alarm) { mId = alarm.id; mEnabledPref.setChecked(alarm.enabled); mLabel.setText(alarm.label); mLabel.setSummary(alarm.label); mHour = alarm.hour; mMinutes = alarm.minutes; mRepeatPref.setDaysOfWeek(alarm.daysOfWeek); mVibratePref.setChecked(alarm.vibrate); mFMRingState.setChecked(alarm.fmState);

if (localAudioManager != null && !localAudioManager.isWiredHeadsetOn()) { mFMRingState.setEnabled(false); mFMAlarmPref.setEnabled(false); mAlarmPref.setEnabled(true); } else if (mFMAlarmPref.mEntries == null) { mFMAlarmPref.setEnabled(false); mFMRingState.setEnabled(true); if (mFMRingState.isChecked()) { searchConfirm(); } } else { mFMRingState.setEnabled(true); mFMAlarmPref.setEnabled(alarm.fmState); mAlarmPref.setEnabled(!alarm.fmState); } // Give the alert uri to the preference. mAlarmPref.setAlert(alarm.alert); if (alarm.fmChannel != 0) { String str = Integer.toString(alarm.fmChannel); mFMAlarmPref.setSummary(str.substring(0, str.length() - 1) + "." + str.substring(str.length() - 1) + " MHz"); } else { mFMAlarmPref.setSummary(getString(R.string.select_channel)); } mAlarmPref.setAlert(alarm.alert , alarm.alert_title); updateTime(); 复制代码

}

@Override public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { if (preference == mTimePref) { showTimePicker(); } else if (preference == mFMRingState) { mAlarmPref.setEnabled(!mFMRingState.isChecked()); mFMAlarmPref.updateEntres(); if (mFMAlarmPref.mEntries == null) { mFMAlarmPref.setEnabled(false); if (mFMRingState.isChecked()) { searchConfirm(); } } else { mFMAlarmPref.setEnabled(mFMRingState.isChecked()); } }

return super.onPreferenceTreeClick(preferenceScreen, preference); 复制代码

}

@Override public void onBackPressed() { // In the usual case of viewing an alarm, mTimePickerCancelled is // initialized to false. When creating a new alarm, this value is // assumed true until the user changes the time. /* if (!mTimePickerCancelled) { saveAlarm(); } */ //when setting a new alarm,should not save this new alarm //if someone want cancel the new alarm eventhough setting changed been listened. //and existed clock should not save any alarm setting info before "done" button is click. finish(); }

private void showTimePicker() { if( tpd != null ){ if( tpd.isShowing() ){ tpd.cancel() ; } }

tpd = new TimePickerDialog(this, this, mHour, mMinutes, DateFormat.is24HourFormat(this)) ; tpd.show() ; mTimePickerCancelled = false; 复制代码

}

public void onTimeSet(TimePicker view, int hourOfDay, int minute) { // onTimeSet is called when the user clicks "Set" mTimePickerCancelled = false; //if there is a alarm witch has the same hour and minutes , show timepicker again if(Alarms.isSametimeAlarm(getContentResolver(), hourOfDay, minute,mId)){ sameAlarmShow(hourOfDay, minute); return; } mHour = hourOfDay; mMinutes = minute; updateTime(); // If the time has been changed, enable the alarm. mEnabledPref.setChecked(true); //popAlarmSetToast(this, saveAlarmAndEnableRevert()); final Button revert = (Button) findViewById(R.id.alarm_revert); revert.setEnabled(true); }

private void updateTime() { if (Log.LOGV) { Log.v("updateTime " + mId); } mTimePref.setSummary(Alarms.formatTime(this, mHour, mMinutes, mRepeatPref.getDaysOfWeek())); }

private long saveAlarmAndEnableRevert() { // Enable "Revert" to go back to the original Alarm. long time=saveAlarm(); final Button revert = (Button) findViewById(R.id.alarm_revert); revert.setEnabled(true); return time; }

private long saveAlarm() { Alarm alarm = new Alarm(); alarm.id = mId; alarm.enabled = mEnabledPref.isChecked(); alarm.hour = mHour; alarm.minutes = mMinutes; alarm.daysOfWeek = mRepeatPref.getDaysOfWeek(); alarm.vibrate = mVibratePref.isChecked(); alarm.fmState = mFMRingState.isChecked(); String str = (String) mFMAlarmPref.getSummary(); if (str != getString(R.string.select_channel)) { alarm.fmChannel = (int) (Float.parseFloat(str.substring(0, str.lastIndexOf(" "))) * 10); } else { alarm.fmChannel = mFMAlarmPref.getChannel(); } alarm.label = mLabel.getText(); alarm.alert = mAlarmPref.getAlert(); alarm.alert_title = mAlarmPref.getAlertTitle() ; long time; if (alarm.id == -1) { time = Alarms.addAlarm(this, alarm); // addAlarm populates the alarm with the new id. Update mId so that // changes to other preferences update the new alarm. mId = alarm.id; } else { time = Alarms.setAlarm(this, alarm); } return time; }

private void deleteAlarm() { new AlertDialog.Builder(this) .setTitle(getString(R.string.delete_alarm)) .setMessage(getString(R.string.delete_alarm_confirm)) .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { public void onClick(DialogInterface d, int w) { Alarms.deleteAlarm(SetAlarm.this, mId); finish(); } }) .setNegativeButton(android.R.string.cancel, null) .show(); }

private void searchConfirm() { new AlertDialog.Builder(this) .setTitle(getString(R.string.info)) .setMessage(getString(R.string.auto_search_confirm)) .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int w) { dialog.dismiss(); searchProcess(); }

private void searchProcess() { LinearLayout myLayout; LayoutInflater layoutInflater; AlertDialog.Builder dialogBuilder; myLayout = new LinearLayout(SetAlarm.this); layoutInflater=(LayoutInflater) getSystemService(SetAlarm.this.LAYOUT_INFLATER_SERVICE); myLayout=(LinearLayout) layoutInflater.inflate(R.layout.progress_dialog, null); progressBar=(ProgressBar)myLayout.findViewById(R.id.progressBar); progressBar.setMax(205); dialogBuilder = new AlertDialog.Builder(SetAlarm.this); dialogBuilder.setView(myLayout); dialogBuilder.setMessage(SetAlarm.this.getString(R.string.channel_searching)); dialog = dialogBuilder.show(); dialog.setCancelable(false); if (localAudioManager != null && localAudioManager.isWiredHeadsetOn()) { registerReceiver(searchBroadcast, new IntentFilter(SEARCH_DONE)); registerReceiver(searchBroadcast, new IntentFilter(SET_PROGRESS)); mFMAlarmPref.searchChannel(); } else { if(dialog != null && dialog.isShowing()) { dialog.dismiss(); } Toast toast = Toast.makeText(SetAlarm.this, SetAlarm.this.getString(R.string.plug_in_headset), Toast.LENGTH_LONG); ToastMaster.setToast(toast); toast.show(); } } }) .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { mFMRingState.setChecked(false); mAlarmPref.setEnabled(true); dialog.dismiss(); } }).show(); 复制代码

}

/**

Display a toast that tells the user how long until the alarm goes off. This helps prevent "am/pm" mistakes. */ static void popAlarmSetToast(Context context, int hour, int minute, Alarm.DaysOfWeek daysOfWeek) { popAlarmSetToast(context, Alarms.calculateAlarm(hour, minute, daysOfWeek) .getTimeInMillis()); }

static void popAlarmSetToast(Context context, long timeInMillis) { String toastText = formatToast(context, timeInMillis); Toast toast = Toast.makeText(context, toastText, Toast.LENGTH_LONG); ToastMaster.setToast(toast); toast.show(); }

/**

format "Alarm set for 2 days 7 hours and 53 minutes from

now" */ static String formatToast(Context context, long timeInMillis) { long delta = timeInMillis - System.currentTimeMillis(); long hours = delta / (1000 * 60 * 60); long minutes = delta / (1000 * 60) % 60; long days = hours / 24; hours = hours % 24;

String daySeq = (days == 0) ? "" : (days == 1) ? context.getString(R.string.day) : context.getString(R.string.days, Long.toString(days));

String minSeq = (minutes == 0) ? "" : (minutes == 1) ? context.getString(R.string.minute) : context.getString(R.string.minutes, Long.toString(minutes));

String hourSeq = (hours == 0) ? "" : (hours == 1) ? context.getString(R.string.hour) : context.getString(R.string.hours, Long.toString(hours));

boolean dispDays = days > 0; boolean dispHour = hours > 0; boolean dispMinute = minutes > 0;

int index = (dispDays ? 1 : 0) | (dispHour ? 2 : 0) | (dispMinute ? 4 : 0);

String[] formats = context.getResources().getStringArray(R.array.alarm_set); return String.format(formats[index], daySeq, hourSeq, minSeq); } /**

when new set time has already been set by other alarms , show timepicker again

@param hour

@param minute */ private void sameAlarmShow(int hour,int minute){ String time = hour+":"+minute; if(minute



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3